//package org.sc.xl.jdbc;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import com.alibaba.fastjson.JSONObject;
//
//import java.sql.*;
//import java.util.ArrayList;
//import java.util.List;
//
//public class Test {
////
//    private static String DB_URL = "jdbc:mysql://localhost:13310";
//    private static String DB_NAME = "test";
//    private static String DB_USER = "dbt3";
//    private static String DB_PWD = "123456";
//
//    /**
//     * select 后，将结果集包装成一个JSONObject式的LIST返回
//     *
//     * @throws
//     */
//    public static List<JSONObject> select(String sql) throws SQLException {
//        List<JSONObject> resultList = new ArrayList<>();
//        Connection conn = null;
//        PreparedStatement stmt = null;
//        ResultSet rs = null;
//        try {
//            conn = getConnection();
//            stmt = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
//            rs = stmt.executeQuery();
//            ResultSetMetaData metaData = rs.getMetaData();
//
//            int columnCount = metaData.getColumnCount();
//            String[] upperCaseColumnNameArr = new String[columnCount + 1];
//            String tabName;
//            String catalog;
//            String schema;
//
//            //结果集全部转成大写
//            for (int i = 1; i <= columnCount; i++) {
//                tabName = String.valueOf(metaData.getTableName(i));
//                catalog = String.valueOf(metaData.getCatalogName(i));
//                schema = String.valueOf(metaData.getSchemaName(i));
//                System.out.println("table name is " + tabName + ", catalog name is " + catalog + ", schema name is " + schema);
//                upperCaseColumnNameArr[i] = ((tabName.equals("") ? "" : (tabName + ".")) + metaData.getColumnLabel(i)).toUpperCase();
//            }
//
//            //将resultSet里面的结果集放置进json里面并用list返回
//            int columnIndex;
//            JSONObject jsonObj;
//            while (rs.next()) {
//                jsonObj = new JSONObject();
//                for (columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
//                    jsonObj.put(upperCaseColumnNameArr[columnIndex], rs.getString(columnIndex));
//                }
//                resultList.add(jsonObj);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//        }
//        return resultList;
//    }
//
//    public static void insert(String sql) throws SQLException {
//        Connection conn = null;
//        PreparedStatement stmt = null;
//        try {
//            conn = getConnection();
//            stmt = conn.prepareStatement(sql);
//            stmt.execute();
//            SQLWarning[] warnings = new SQLWarning[1];
//            warnings[0] = stmt.getWarnings();
//            System.out.println(warnings[0]);
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//        }
//   }
//
//    public static void main(String[] args) throws SQLException {
//        String sql = "select @@sql_mode";
//        System.out.println(select(sql));
//        sql = "INSERT INTO test.dt1 values('2024-03-18T10:10:16.466+8:00')";
//        System.out.println(sql);
//        insert(sql);
//
//    }
//
//    /**
//     * 以下是数据库链接代码  不用关注
//     */
//
//    static DruidDataSource dataSource = null;
//
//
//    static {
//        DruidDataSource druidDataSource = initDBSource();
//        if (null != druidDataSource) {
//            try {
//                druidDataSource.init();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//            dataSource = druidDataSource;
//        }
//    }
//
//    /**
//     * 初始化数据库连接
//     */
//    private static DruidDataSource initDBSource() {
//        DruidDataSource druidDataSource = new DruidDataSource();
//        druidDataSource.setUrl(DB_URL + "/" + DB_NAME + "?serverTimezone=UTC&dontTrackOpenResources=true");
//        //druidDataSource.setUrl(DB_URL + "/" + DB_NAME + "?serverTimezone=UTC&dontTrackOpenResources=true&jdbcCompliantTruncation=FALSE");
//        druidDataSource.setName(DB_NAME);
//        druidDataSource.setUsername(DB_USER);
//        druidDataSource.setPassword(DB_PWD);
//        druidDataSource.setMinIdle(1);
//        druidDataSource.setMaxWait(60000);
//        druidDataSource.setTimeBetweenEvictionRunsMillis(60000);
//        druidDataSource.setMinEvictableIdleTimeMillis(80000);
//        druidDataSource.setPoolPreparedStatements(true);
//        druidDataSource.setMaxOpenPreparedStatements(100);
//        druidDataSource.setValidationQuery("select 1;");
//        druidDataSource.setTestWhileIdle(true);
//        druidDataSource.setTestOnReturn(false);
//        druidDataSource.setTestOnBorrow(false);
//        druidDataSource.setRemoveAbandoned(true);//超时回收
//        druidDataSource.setRemoveAbandonedTimeoutMillis(60 * 1000);//超时回收时间 60秒
//        return druidDataSource;
//    }
//
//    /**
//     * 获取数据库连接实例 (带标签)
//     */
//    public static Connection getConnection() throws SQLException {
//        Connection connection = null;
//        if (null != dataSource) {
//            connection = dataSource.getConnection();
//        }
//        if (null == connection) {
//            throw new SQLException("没找到该数据库的配置信息!");
//        }
//        return connection;
//    }
//
//    private static void rebackDruidConnect(Connection connection) throws SQLException {
//        if (!connection.isClosed()) {
//            connection.close();
//        }
//    }
//
//    private static void close(ResultSet resultSet) throws SQLException {
//        if (null != resultSet) {
//            resultSet.close();
//            resultSet = null;
//        }
//    }
//
//    private static void close(Statement statement) throws SQLException {
//        if (null != statement) {
//            statement.clearBatch(); // 清除批量处理中的信息
//            statement.close();
//        }
//    }
//
//    public static void close(Connection connection, Statement statement, ResultSet resultSet)
//            throws SQLException {
//        if (null != connection) {
//            close(resultSet);
//            close(statement);
//            rebackDruidConnect(connection);
//        }
//    }
//
//    public void destroy() throws SQLException {
//        if (!dataSource.isClosed())
//            dataSource.close();
//    }
//
//}
